Факт | fact

Тип функций fact (факт) применяется в качестве условий или вопросов, а так же как утверждения: Если цвет стен зелёный, то ... // условие Цвет стен зелёный? // вопрос Цвет стен зелёный. // утверждение Факты могут входить в состав логических выражений, а также как условия в состав условных конструкций. На этапе парсинга строки происходит проверка факта. Результат проверки - всегда логи- ческое значение. Для условий результат проверки влияет на дальнейшее выполнение услов- ной конструкции, для вопросов результат проверки является финальным результатом стро- ки, для утверждений результат не важен. После однозначного разбора строки с утверждением происходит выполнение этого утвер- ждения (в нашем примере стенам будет присвоен зелёный цвет). Выполнение утверждения изменяет состояние игры.

Примеры фактов:

Цвет стен зелёный
в комнате 5 человек

Пример функции факта:

fact (нельзя_пройти, локация, локация)
{
  == check ==
  yes //по умолчанию никуда нельзя пройти
}

Секции в фактах

В фактах допускаются секции: parsing (парсинг) check (проверка) execute (выполнение)

Секция parsing (парсинг)

Секция универсальна для всех типов функций. Смотрите описание в разделе Парсерные функции.

Секция check (проверка)

Секция check (проверка) в фактах проверяет факт на его соответствие действительности и возвращает да/нет. Именно эта секция позволяет использовать факты в условных конструкциях.

Пример:

факт (предмет А, весит, число Б)
{
  -- проверка --
  А.вес == Б?
  -- выполнение --
  А.вес = Б
}

если камень весит 100 то {...}

Секция execute (выполнение)

Секция execute (выполнение) в факте должна сделать так, чтобы факт стал истинным.

Пример:

факт (предмет А, весит, число Б)
{
  -- проверка --
  А.вес == Б?
  -- выполнение --
  А.вес = Б
}

По своей сути факт – это инструмент создателя игры, позволяющий перекроить игровой мир. То, что указывается в факте, всегда истинно. В связи с этим, секция execute (выполнение) для фактов работает только в режиме "вне игры", иначе игрок мог бы очень сильно изменить игровой мир.

Смотрите также

System_GetState, System states, System state value class


to do:
Отформатировать.
Проверить корректность.
Дополнить.